From: Keir Fraser Date: Mon, 15 Dec 2008 11:37:14 +0000 (+0000) Subject: x86: Decode CPUID for TSC guarantees. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14026^2~21 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=53e5cd08efbc58937be16027b35414a3353bfc51;p=xen.git x86: Decode CPUID for TSC guarantees. Signed-off-by: Wei Gang --- diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c index 1f13d93a21..f2ff228a16 100644 --- a/xen/arch/x86/cpu/amd.c +++ b/xen/arch/x86/cpu/amd.c @@ -461,8 +461,10 @@ static void __devinit init_amd(struct cpuinfo_x86 *c) if (cpuid_eax(0x80000000) >= 0x80000007) { c->x86_power = cpuid_edx(0x80000007); - if (c->x86_power & (1<<8)) + if (c->x86_power & (1<<8)) { set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); + set_bit(X86_FEATURE_NOSTOP_TSC, c->x86_capability); + } } #ifdef CONFIG_X86_HT diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c index f8fdb8af28..1574004f6c 100644 --- a/xen/arch/x86/cpu/intel.c +++ b/xen/arch/x86/cpu/intel.c @@ -218,6 +218,10 @@ static void __devinit init_intel(struct cpuinfo_x86 *c) if ((c->x86 == 0xf && c->x86_model >= 0x03) || (c->x86 == 0x6 && c->x86_model >= 0x0e)) set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); + if (cpuid_edx(0x80000007) & (1u<<8)) { + set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); + set_bit(X86_FEATURE_NOSTOP_TSC, c->x86_capability); + } start_vmx(); } diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeature.h index 481236c833..7df0486981 100644 --- a/xen/include/asm-x86/cpufeature.h +++ b/xen/include/asm-x86/cpufeature.h @@ -74,6 +74,7 @@ #define X86_FEATURE_P3 (3*32+ 6) /* P3 */ #define X86_FEATURE_P4 (3*32+ 7) /* P4 */ #define X86_FEATURE_CONSTANT_TSC (3*32+ 8) /* TSC ticks at a constant rate */ +#define X86_FEATURE_NOSTOP_TSC (3*32+ 9) /* TSC does not stop in C states */ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */ #define X86_FEATURE_XMM3 (4*32+ 0) /* Streaming SIMD Extensions-3 */